package cn.mini.mybatis.mybatis.session;

/**
 * SqlSession 是 MyBatis 简化版的核心接口，提供基本的查询功能和获取 Mapper 动态代理的方法。
 */
public interface SqlSession {

    /**
     * 根据指定的SqlID获取一条记录的封装对象，并将结果映射到指定类型的对象列表中。
     *
     * @param <E>       结果对象的类型
     * @param statement SQL 语句的唯一标识，通常为 "命名空间.id" 的形式
     * @param parameter 查询参数
     * @return 查询结果对象列表，如果没有匹配的记录则返回空列表
     */
    <E> E selectOne(String statement, Object parameter);

    /**
     * 获取指定类型的 Mapper 接口的动态代理对象。
     *
     * @param <T>  Mapper 接口的类型
     * @param type Mapper 接口的 Class 对象
     * @return 指定类型的 Mapper 接口的动态代理对象
     */
    <T> T getMapper(Class<T> type);
}

